package com.honey.generator.java.extension.point;

import com.honey.compilation.java.AbstractJavaCompilation;
import com.honey.compilation.java.Field;
import com.honey.compilation.java.InnerClass;
import com.honey.compilation.java.InnerEnum;
import com.honey.compilation.java.Method;
import com.honey.compilation.java.StaticBlock;
import com.honey.core.compiler.ContentType;
import com.honey.core.dbmapping.introspect.IntrospectSchema;
import com.honey.core.dbmapping.introspect.IntrospectSchemaColumn;
import com.honey.core.types.FullyQualifiedJavaType;

/**
 * 生成java类处理插件
 * @author Administrator
 *
 */
public interface GeneratorJavaClass {
	
	/**
	 * 创建全新的java编译对象(接口  类 枚举),
	 * @param schema 
	 * @param columns
	 * @return
	 */
	public AbstractJavaCompilation createNewCompilation(IntrospectSchema introspectSchema, IntrospectSchemaColumn introspectSchemaColumn);
	
	/**
	 * 获取编译后的类的类型
	 * @return
	 */
	public FullyQualifiedJavaType getType();
	
	/**
	 * 获取导入的类或者包
	 * @return
	 */
	public FullyQualifiedJavaType[] importImportClass();
	
	/**
	 * 获取java类中需要包含的方法
	 * @return
	 */
	public Method[] importMethods();
	
	/**
	 * 获取java类中需要包含的属性
	 * @return
	 */
	public Field[] importFields();
	
	/**
	 * 获取java 类中需要包含的静态快
	 * @return
	 */
	public StaticBlock[] importStaticBlocks();
	
	/**
	 * 获取java类中需要包含的内部类
	 * @return
	 */
	public InnerClass[] importInnerClass();
	
	/**
	 * 获取java类中需要包含的枚举类
	 * @return
	 */
	public InnerEnum[] importInnerEnumClass();
	
	/**
	 * 获取java文件内容类型
	 * @return
	 */
	public ContentType getContentType() ;
}
